﻿using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;

namespace Dataglot.CrossDb
{
    /// <summary>
    /// Executes same command against several providers. Implements same interface as GenericCommand
    /// </summary>
    /// <remarks>
    /// This is an acid test of multidatabase support. All commands are run on all supported database.
    /// 
    /// This also provides client side mirroring if factories correspond to same provider, different databases 
    /// in different locations. 
    /// 
    /// In mirroring mode, only one data source should be read. In acid-test mode, both database are read, but
    /// only the result from one are used.
    /// </remarks>
    public class GenericMultiCastCommand : IGenericCommand
    {

        public GenericMultiCastCommand(Dictionary<string,DbProviderFactory> factories)
        {
            
        }

        public string ConnectionString
        {
            get { throw new NotImplementedException(); }
        }

        public void ComposeSql(string sql)
        {
            throw new NotImplementedException();
        }

        public DbParameter AddParameter(string name, System.Data.DbType type)
        {
            throw new NotImplementedException();
        }

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public string Compose(string sql)
        {
            throw new NotImplementedException();
        }

        public void Set(string name, object value)
        {
            throw new NotImplementedException();
        }

        public DbDataReader ExecuteReader()
        {
            throw new NotImplementedException();
        }

        public DbDataReader ExecuteReader(System.Data.CommandBehavior behavior)
        {
            throw new NotImplementedException();
        }

        public int ExecuteNonQuery()
        {
            throw new NotImplementedException();
        }

        public object ExecuteScalar()
        {
            throw new NotImplementedException();
        }

        public bool IsInitialized()
        {
            throw new NotImplementedException();
        }
    }
}
